
import aa = module("main/org/sdmx/model/v2/base/AnnotableArtefact");
import is = module("main/org/sdmx/model/v2/base/InternationalString");

/**
	* Provides identity to all derived classes. Identifiable artefacts can have
	* both a multi-lingual name and a multi-lingual description. It also 
	* provides annotations to derived classes, as it extends the 
	* AnnotableArtefact interface.
	* 
	* @author Xavier Sosnovsky, Anthony Morel
	*/
export interface IdentifiableArtefact extends aa.AnnotableArtefact
{
	    /**
	    * The unique identifier of the SDMX artefact
	    * 
		* @throws ArgumentError <code>ArgumentError</code> If the supplied id 
		* is null or empty
	    */
	getId():string;
	
	/**
	    * @private
	    */	
	setId(id:string);
		
	/**
	    * The Universal Resource Identifier of the SDMX artefact
	    */
	getUri():string;
		
	/**
	    * @private
	    */
	setUri(uri:string);
		
	/**
	    * The Universal Resource Name of the SDMX artefact
	    */
	getUrn():string;
		
	/**
	    * @private
	    */
	setUrn(urn:string);
		
	/**
	    * The multilingual name of the SDMX artefact
	    */
	getName():is.InternationalString;
		
	/**
	    * @private
	    */
	setName(name:is.InternationalString);
		
	/**
	    * The multilingual description of the SDMX artefact
	    */
	getDescription():is.InternationalString;

	/**
	    * @private
	    */		
	setDescription(description:is.InternationalString)
}